package com.ethink.warehouse.api.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.math.BigDecimal;

/**
 * 入库/出库单 更新请求对象
 *
 * @author default
 * @date 2022-11-10
 */
@Data
public class LogisticsTraceDetailOrderUpdateRequest {

    @Schema(description ="主键")
    private Long id;

    @Schema(description ="单号")
    private String detailOrderNo;

    @Schema(description ="物流跟进单号")
    private String logisticsTraceOrderNo;

    @Schema(description ="枚举 订单类型:1-入库(t1)|2-出库(t2)")
    private Integer orderType;

    @Schema(description ="枚举 入库状态:1-申请(s1)|2-处理中(s2)|3-完成(s3)|4-取消(s4)")
    private Integer orderStatus;

    @Schema(description ="原始单号")
    private String sourceOrderNo;

    @Schema(description ="原始详单号")
    private String sourceDetailOrderNo;

    @Schema(description ="原始订单类型")
    private String sourceOrderType;

    @Schema(description ="科目")
    private String subject;

    @Schema(description ="商品SKU")
    private String mateSku;

    @Schema(description ="生产批次")
    private String produceCode;

    @Schema(description ="枚举 库存类型:1-正品(zp)|2-瑕疵(cc)")
    private Integer inventoryType;

    @Schema(description ="采购单号")
    private String purchaseOrderNo;

    @Schema(description ="采购详单号")
    private String purchaseDetailOrderNo;

    @Schema(description ="提交申请数量")
    private Integer applyInQty;

    @Schema(description ="实际申请数量")
    private Integer actualApplyInQty;

    @Schema(description ="最终数量(入库/出库)")
    private Integer actualInQty;

    @Schema(description ="初始分仓编码")
    private String sourceSubWarehouseCode;

    @Schema(description ="初始分仓名称")
    private String sourceSubWarehouseName;

    @Schema(description ="目的分仓编码")
    private String targetSubWarehouseCode;

    @Schema(description ="目的分仓名称")
    private String targetSubWarehouseName;

    @Schema(description ="申请人账号")
    private String createUserCode;

    @Schema(description ="申请人名称")
    private String createUserName;

    @Schema(description ="商品编码")
    private String mateCode;

    @Schema(description ="商品名称")
    private String mateName;

    @Schema(description ="商品SKU名称")
    private String mateSkuName;

    @Schema(description ="大类编号")
    private String generaCode;

    @Schema(description ="中类编号")
    private String minorDefectsCode;

    @Schema(description ="小类编号")
    private String subclassCode;

    @Schema(description ="商品分类")
    private String categoryName;

    @Schema(description ="品牌编码")
    private String brandCode;

    @Schema(description ="品牌名称")
    private String brandName;

    @Schema(description ="商品条码")
    private String internationCode;

    @Schema(description ="包装单位编码")
    private String unitCode;

    @Schema(description ="包装单位名称")
    private String unitName;

    @Schema(description ="商品规格")
    private String productSpecification;

    @Schema(description ="原产国")
    private String countryOfOrigin;

    @Schema(description ="相关单位编码")
    private String companyCode;

    @Schema(description ="相关单位名称")
    private String companyName;

    @Schema(description ="货币编码")
    private String currencyCode;

    @Schema(description ="货币名称")
    private String currencyName;

    @Schema(description ="入库日期")
    private Date operateTime;

    @Schema(description ="商品生产日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date productDate;

    @Schema(description ="商品过期日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date expireDate;

    @Schema(description ="成本单价")
    private BigDecimal costPrice;

    @Schema(description ="操作员账号")
    private String operateUserCode;

    @Schema(description ="操作员名称")
    private String operateUserName;


}
